package com.info.zhiduoduo.admin.model.dto.kingdee;

import com.info.zhiduoduo.repository.dto.account.ReceiptDto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ExportReceiptDto {

	//序号---默认从100000自增
    private int serialNumber;
    //单据类型#编码---默认SKDLX01_SYS
    private String billTypeCode;
	//单据类型#名称---默认销售收款单
    private String billTypeName;
	//单据编号---充值流水单号
    private String billNumber;
	//业务日期---流水创建日期
    private String businessDate;
	//往来单位类型---默认客户
    private String currentUnitType;
	//往来单位#编码---充值公司编码
    private String currentUnitCode;
	//往来单位#名称---充值公司名称
    private String currentUnitName;
	//付款单位类型---默认客户
    private String payerType;
	//付款单位#编码---充值公司编码
    private String payerCode;
	//付款单位#名称---充值公司名称
    private String payerName;
	//币别#编码---默认PRE001
    private String currencyCode;
	//币别#名称---默认人民币
    private String currencyName;
	//收款组织#编码---平台主体公司编码
    private String collectionOrganizationCode;
	//收款组织#名称---平台主体公司名称
    private String collectionOrganizationName;
	//结算汇率---默认为1
    private int settlementRate;
    //结算组织#编码---平台主体公司编码
    private String settlementOrganizationCode;
	//结算组织#名称---平台主体公司名称
    private String settlementOrganizationName;
	//销售组织#编码---平台主体公司编码
    private String saleOrganizationCode;
	//销售组织#名称---平台主体公司名称
    private String saleOrganizationName;
	//业务类型---默认销售业务
    private String businessType;
	//收款单明细(序号)
    private int detailedSerialNumber;
	//结算方式#编码---默认JSFS04_SYS
    private String settlementMethodCode;
	//结算方式#名称---默认电汇
    private String settlementMethodName;
	//收款用途#编码---默认SFKYT02_SYS
    private String purposeOfCollectionCode;
	//收款用途#名称---默认预收款
    private String purposeOfCollectionName;
	//表体-应收金额---充值金额
    private String bodyAmount;
	//收款金额---充值金额
    private String collectionAmount;
	//手续费---默认为空
	//长短款---默认为空
	//我方银行账户#编码---平台主体公司账户
    private String bankAccount;
	//我方银行账户#名称---平台主体公司账户名称
    private String bankAccountName;
	//收款金额本位币---充值金额
    private String standardCurrency;

    public static ExportReceiptDto of(int number, ReceiptDto dto,
                                      String date, String amount){
        return new ExportReceiptDto()
                .setSerialNumber(number)
                .setBillTypeCode("SKDLX01_SYS")
                .setBillTypeName("销售收款单")
                .setBillNumber(dto.getRechargeno())
                .setBusinessDate(date)
                .setCurrentUnitType("客户")
                .setCurrentUnitCode(dto.getRechargeCompanyCode())
                .setCurrentUnitName(dto.getRechargeCompanyName())
                .setPayerType("客户")
                .setPayerCode(dto.getRechargeCompanyCode())
                .setPayerName(dto.getRechargeCompanyName())
                .setCurrencyCode("PRE001")
                .setCurrencyName("人民币")
                .setCollectionOrganizationCode(dto.getSubjectCompanyOrganizationCode())
                .setCollectionOrganizationName(dto.getSubjectCompanyName())
                .setSettlementRate(1)
                .setSettlementOrganizationCode(dto.getSubjectCompanyOrganizationCode())
                .setSettlementOrganizationName(dto.getSubjectCompanyName())
                .setSaleOrganizationCode(dto.getSubjectCompanyOrganizationCode())
                .setSaleOrganizationName(dto.getSubjectCompanyName())
                .setBusinessType("销售业务")
                .setDetailedSerialNumber(number)
                .setSettlementMethodCode("JSFS04_SYS")
                .setSettlementMethodName("电汇")
                .setPurposeOfCollectionCode("SFKYT02_SYS")
                .setPurposeOfCollectionName("预收款")
                .setBodyAmount(amount)
                .setCollectionAmount(amount)
                .setBankAccount(dto.getAccount())
                .setBankAccountName(dto.getSubjectCompanyName())
                .setStandardCurrency(amount);
    }
}
